/**
 * Copyright &copy; 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
 */
package com.jeeplus.modules.sys.entity;

import com.jeeplus.modules.activity.entity.Activity;
import com.jeeplus.modules.sys.entity.Office;
import com.jeeplus.modules.sys.entity.User;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.hibernate.validator.constraints.Email;

import com.jeeplus.common.persistence.ActEntity;
import com.jeeplus.common.persistence.DataEntity;
import com.jeeplus.common.utils.excel.annotation.ExcelField;

/**
 * 成果登记Entity
 * @author lw
 * @version 2017-12-30
 */
public class Result  extends  ActEntity<Result> {
	
	private static final long serialVersionUID = 1L;
	private Office office;		// 部门
	private User user;		// 填表人姓名
	private String number;		// 项目编号
	private String topicName;		// 课题（成果）名称
	private String researchType;		// 研究类别
	private String topicType;		// 课题类型
	private String subjectCode;		// 学科、领域分类:代码
	private String subjectName;		// 学科、领域分类:名称
	private Date projectTime;		// 立项、结项时间
	private String achievementForm;		// 成果形式
	private String achievementLang;		// 成果文中
	private User pubUser;		// 课题主持人/发表成果者姓名
	private String wordsNumber;		// 成果 字数
	private String duty;		// 职称/职务
	private Office pubOffice;		// 课题主持人/发表成果者所在部门
	private String publisherTel;		// 课题主持人/发表成果者联系方式:电话
	private String publisherEmail;		// 课题主持人/发表成果者联系方式：e-mail
	private String funds;		// 课题核准经费总额
	private Date subjectStartTime;		// 课题起时间
	private Date subjectEndTime;		// 课题止时间
	private String publishingUnit;		// 出版单位（注明公开与内部）
	private Date publishingTime;		// 出版时间/期数
	private String coagent;		// 合作者/参与者（注明第几责任人，以发表姓名排序为准）
	private String content;		// 获奖、批示、转载、评论、应用等情况
	private String intro;		// 简介
	private String deptApproveAdvice; //部门意见
	private String deptLeaderAdvice; //部门分管院领导意见
	private String sciresearchDeptAdvice; //科研院负责人意见
	private String bossLeaderAdvice; //分管科研院领导意见
	private String procInsId; //流程Id
	private String projectType; //项目类型
	private String processNode;
	private Date processEndtime;
	
	// 查询条件
	private String startDate;
	private String endDate;
	
	public Result() {
		super();
	}

	public Result(String id){
		super(id);
	}

	public String getStartDate() {
		return startDate;
	}

	public void setStartDate(String startDate) {
		this.startDate = startDate;
	}

	public String getEndDate() {
		return endDate;
	}

	public void setEndDate(String endDate) {
		this.endDate = endDate;
	}

	@ExcelField(title="部门", align=2, sort=7)
	public Office getOffice() {
		return office;
	}

	public void setOffice(Office office) {
		this.office = office;
	}
	
	@ExcelField(title="填表人姓名", fieldType=User.class, value="user.name", align=2, sort=8)
	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}
	
	@ExcelField(title="项目编号", align=2, sort=9)
	public String getNumber() {
		return number;
	}

	public void setNumber(String number) {
		this.number = number;
	}
	
	@ExcelField(title="课题（成果）名称", align=2, sort=10)
	public String getTopicName() {
		return topicName;
	}

	public void setTopicName(String topicName) {
		this.topicName = topicName;
	}
	
	@ExcelField(title="研究类别", dictType="research_type", align=2, sort=11)
	public String getResearchType() {
		return researchType;
	}

	public void setResearchType(String researchType) {
		this.researchType = researchType;
	}
	
	@ExcelField(title="课题类型", dictType="topic_type", align=2, sort=12)
	public String getTopicType() {
		return topicType;
	}

	public void setTopicType(String topicType) {
		this.topicType = topicType;
	}
	
	@ExcelField(title="学科、领域分类:代码", align=2, sort=13)
	public String getSubjectCode() {
		return subjectCode;
	}

	public void setSubjectCode(String subjectCode) {
		this.subjectCode = subjectCode;
	}
	
	@ExcelField(title="学科、领域分类:名称", align=2, sort=14)
	public String getSubjectName() {
		return subjectName;
	}

	public void setSubjectName(String subjectName) {
		this.subjectName = subjectName;
	}
	
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
	@ExcelField(title="立项、结项时间", align=2, sort=15)
	public Date getProjectTime() {
		return projectTime;
	}

	public void setProjectTime(Date projectTime) {
		this.projectTime = projectTime;
	}
	
	@ExcelField(title="成果形式", dictType="achievement_form", align=2, sort=16)
	public String getAchievementForm() {
		return achievementForm;
	}

	public void setAchievementForm(String achievementForm) {
		this.achievementForm = achievementForm;
	}
	
	@ExcelField(title="成果文中", dictType="achievement_lang", align=2, sort=17)
	public String getAchievementLang() {
		return achievementLang;
	}

	public void setAchievementLang(String achievementLang) {
		this.achievementLang = achievementLang;
	}
	
	@ExcelField(title="课题主持人/发表成果者姓名", fieldType=User.class, value="pubUser.name", align=2, sort=18)
	public User getPubUser() {
		return pubUser;
	}

	public void setPubUser(User pubUser) {
		this.pubUser = pubUser;
	}
	
	@ExcelField(title="成果 字数", align=2, sort=19)
	public String getWordsNumber() {
		return wordsNumber;
	}

	public void setWordsNumber(String wordsNumber) {
		this.wordsNumber = wordsNumber;
	}
	
	@ExcelField(title="职称/职务", align=2, sort=20)
	public String getDuty() {
		return duty;
	}

	public void setDuty(String duty) {
		this.duty = duty;
	}
	
	@ExcelField(title="课题主持人/发表成果者所在部门", align=2, sort=21)
	public Office getPubOffice() {
		return pubOffice;
	}

	public void setPubOffice(Office pubOffice) {
		this.pubOffice = pubOffice;
	}
	
	@ExcelField(title="课题主持人/发表成果者联系方式:电话", align=2, sort=22)
	public String getPublisherTel() {
		return publisherTel;
	}

	public void setPublisherTel(String publisherTel) {
		this.publisherTel = publisherTel;
	}
	
	@Email(message="课题主持人/发表成果者联系方式：e-mail必须为合法邮箱")
	@ExcelField(title="课题主持人/发表成果者联系方式：e-mail", align=2, sort=23)
	public String getPublisherEmail() {
		return publisherEmail;
	}

	public void setPublisherEmail(String publisherEmail) {
		this.publisherEmail = publisherEmail;
	}
	
	@ExcelField(title="课题核准经费总额", align=2, sort=24)
	public String getFunds() {
		return funds;
	}

	public void setFunds(String funds) {
		this.funds = funds;
	}
	
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
	@ExcelField(title="课题起时间", align=2, sort=25)
	public Date getSubjectStartTime() {
		return subjectStartTime;
	}

	public void setSubjectStartTime(Date subjectStartTime) {
		this.subjectStartTime = subjectStartTime;
	}
	
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
	@ExcelField(title="课题止时间", align=2, sort=26)
	public Date getSubjectEndTime() {
		return subjectEndTime;
	}

	public void setSubjectEndTime(Date subjectEndTime) {
		this.subjectEndTime = subjectEndTime;
	}
	
	@ExcelField(title="出版单位（注明公开与内部）", align=2, sort=27)
	public String getPublishingUnit() {
		return publishingUnit;
	}

	public void setPublishingUnit(String publishingUnit) {
		this.publishingUnit = publishingUnit;
	}
	
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
	@ExcelField(title="出版时间/期数", align=2, sort=28)
	public Date getPublishingTime() {
		return publishingTime;
	}

	public void setPublishingTime(Date publishingTime) {
		this.publishingTime = publishingTime;
	}
	
	@ExcelField(title="合作者/参与者（注明第几责任人，以发表姓名排序为准）", align=2, sort=29)
	public String getCoagent() {
		return coagent;
	}

	public void setCoagent(String coagent) {
		this.coagent = coagent;
	}
	
	@ExcelField(title="获奖、批示、转载、评论、应用等情况", align=2, sort=30)
	public String getContent() {
		return content;
	}

	public void setContent(String content) {
		this.content = content;
	}
	
	@ExcelField(title="简介", align=2, sort=31)
	public String getIntro() {
		return intro;
	}

	public void setIntro(String intro) {
		this.intro = intro;
	}

	

	public String getDeptApproveAdvice() {
		return deptApproveAdvice;
	}

	public void setDeptApproveAdvice(String deptApproveAdvice) {
		this.deptApproveAdvice = deptApproveAdvice;
	}

	public String getDeptLeaderAdvice() {
		return deptLeaderAdvice;
	}

	public void setDeptLeaderAdvice(String deptLeaderAdvice) {
		this.deptLeaderAdvice = deptLeaderAdvice;
	}

	public String getSciresearchDeptAdvice() {
		return sciresearchDeptAdvice;
	}

	public void setSciresearchDeptAdvice(String sciresearchDeptAdvice) {
		this.sciresearchDeptAdvice = sciresearchDeptAdvice;
	}

	public String getBossLeaderAdvice() {
		return bossLeaderAdvice;
	}

	public void setBossLeaderAdvice(String bossLeaderAdvice) {
		this.bossLeaderAdvice = bossLeaderAdvice;
	}

	public String getProcInsId() {
		return procInsId;
	}

	public void setProcInsId(String procInsId) {
		this.procInsId = procInsId;
	}

	public String getProjectType() {
		return projectType;
	}

	public void setProjectType(String projectType) {
		this.projectType = projectType;
	}

	public String getProcessNode() {
		return processNode;
	}

	public void setProcessNode(String processNode) {
		this.processNode = processNode;
	}

	public Date getProcessEndtime() {
		return processEndtime;
	}

	public void setProcessEndtime(Date processEndtime) {
		this.processEndtime = processEndtime;
	}

	public static long getSerialversionuid() {
		return serialVersionUID;
	}
}